package negocio;

import java.sql.Date;
import java.util.LinkedList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import util.FechaUtil;
import beans.EntidadBean;
import beans.ListaDePreciosBean;
import beans.RodamientoBean;

@Entity
public class ListaDePrecios {

	@Id
	private Integer numero;
	private Date fecha;
	private int termino;
	@OneToMany(fetch=FetchType.EAGER,  cascade =  CascadeType.ALL)
	@JoinColumn(name = "lista")
	private List<ItemLista> items;
	private String tipo;
	@ManyToOne@JoinColumn(name="proveedor")private Proveedor proveedor;

	public ListaDePrecios() {
	}

	public ListaDePrecios(Integer numero, Date fecha, int termino, List<ItemLista> items,
			String tipo, Proveedor p) {
		super();
		this.numero = numero;
		this.fecha = fecha;
		this.termino = termino;
		this.items = items;
		this.tipo = tipo;
		this.proveedor = p;
	}

	public ListaDePrecios(ListaDePreciosBean lista) {
		this.fecha = FechaUtil.getSqlDateFromString(lista.getVigencia()
				.getFecha());
		this.termino = lista.getVigencia().getTermino();
		this.tipo = lista.getTipo();
		this.items = new LinkedList<ItemLista>();
		this.numero = lista.getNumero();
		for (RodamientoBean r : lista.getRodamientos()) {
			ItemLista i = new ItemLista();
			i.setPrecio(r.getPrecio());
			Rodamiento roda = new Rodamiento(r);
			i.setRodamiento(roda);
			items.add(i);
		}

	}

	public int getTermino() {
		return termino;
	}

	public void setTermino(int termino) {
		this.termino = termino;
	}

	public Date getFecha() {
		return fecha;
	}

	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}

	public String getTipo() {
		return tipo;
	}

	public void setTipo(String tipo) {
		this.tipo = tipo;
	}

	public List<ItemLista> getItems() {
		return items;
	}

	public void setItems(List<ItemLista> items) {
		this.items = items;
	}



	public Proveedor getProveedor() {
		return proveedor;
	}

	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}

	

	public Integer getNumero() {
		return numero;
	}

	public void setNumero(Integer numero) {
		this.numero = numero;
	}

	public ListaDePreciosBean getBean() {
		ListaDePreciosBean l = new ListaDePreciosBean();
		l.setNumero(this.numero);
		l.setProveedor(this.proveedor.getBean());
		l.setTipo(this.getTipo());
		return l;
	}

	
	
	
}
